Cours : La mémoire virtuelle
Ce cours s'intéresse au principe de la mémoire virtuelle. Il aborde notamment les notions liées aux défauts de pages.
1 Principe de la mémoire virtuelle
La multiprogrammation implique de charger plusieurs programmes en mémoire centrale de manière à obtenir un bon taux d'utilisation
du processeur. Supposons comme sur la figure 1 ici que l'exécution des programmes 1, 2 et 3 soit nécessaire pour obtenir ce
taux d'utilisation du cpu satisfaisant. On peut remarquer qu'une fois les programmes 1 et 2 chargés dans la mémoire, toutes
les cases sont occupées : le programme 3 ne peut pas être chargé.
 |
Fig 1 : Cas de figure
|
|
Lorsque l'on regarde l'exécution d'un processus, on s'aperçoit qu'à un instant donné le processus n'accède qu'à une partie
de son espace d'adressage (par exemple la page de code couramment exécutée par le processeur et la page de données correspondante).
Les autres pages de l'espace d'adressage ne sont pas accédées et sont donc inutiles en mémoire centrale. Une solution pour
pouvoir charger plus de programmes dans la mémoire centrale est donc de ne charger pour chaque programme que les pages couramment
utilisées. Ici par exemple, seules les pages 1,2 et 4 du processus 1 sont chargées ainsi que la page 3 du
processus
2 et les pages 1,2,3 du programme 3.
Puisque les pages d'un espace d'adressage de processus ne sont pas toutes chargées en mémoire centrale, il faut que le processeur
puisse détecter leur éventuelle absence lorsqu'il cherche à effectuer une conversion d'adresse paginée vers l'adresse physique.
Chaque entrée de la
table des pages
com
port
e alors un champ supplémentaire, le bit Validation V, qui est à vrai (1 ou V) si la page est effectivement présente en mémoire
centrale.
La figure 2 montre les valeurs des bits de validation pour les tables des pages des trois processus 1, 2 et 3, en tenant compte
des chargements de leurs pages en mémoire centrale. Ainsi pour le processus 1, la page 1 est chargée dans la case 2, le bit
de validation est à vrai (V). La page 2 est chargée dans la case 4, le bit de validation est à vrai. Par contre la page 3
n'est pas présente en mémoire centrale et donc le bit de validation est à faux (I pour Invalide) : dans ce cas, le champs
n° de case n'a pas de signification.
 |
Fig 2 : Bit de validation
|
|
2 Notion de défaut de pages
Que se passe-t-il à présent lorsque qu'un processus tente d'accéder à une page de son espace d'adressage qui n'est pas en
mémoire centrale ? Ici le processus 2 génère une adresse paginée portant sur la page 2. La MMU accède à la table des pages
pour effectuer la conversion adresse paginée, adresse physique et teste la valeur du bit de validation : elle le trouve à
faux, ce qui veut dire que la page n'est pas chargée dans une case et donc la conversion ne peut être réalisée. Il se produit
alors un
défaut de page
: c'est un déroutement qui oblige le processeur à suspendre l'exécution du programme en cours pour lancer une entrée/sortie
qui charge la page manquante en mémoire centrale dans une case libre.
Définition : Défaut de page
Le défaut de page est un déroutement qui oblige le processeur à suspendre l'exécution du programme en cours pour lancer une
entrée/sortie qui charge la page manquante en mémoire centrale dans une case libre.
Les figures 3 et 4 illustrent le mécanisme de défaut de page. Le processus cherche à convertir l'adresse logique <p,d>. Il
accède donc à l'entrée de sa table des pages correspondant à l'entrée de la page p, et teste la valeur du bit de validation.
Celui-ci est à faux (I) indiquant ainsi que la page n'est pas présente. Automatiquement, puisque la traduction vers l'adresse
physique ne peut pas être faite, le système lève un défaut de page, qui entraine une entrée/sortie pour charger la page manquante
en mémoire centrale. Le défaut de page charge la page manquante dans une case libre de la mémoire centrale, puis le système
met à jour l'entrée de la table des pages correspondant à la page p : le bit de validation passe à vrai et le numéro de case
physique contenant la page p est renseigné. Enfin, la traduction vers l'adresse physique reprend.
 |
Fig 3 : Mécanisme du défaut de pages
|
|
 |
Fig 4 : Mécanisme du défaut de pages
|
|
3 Les algorithmes de remplacement de pages
Lors d'un défaut de page, la page manquante est chargée dans une case libre. La totalité des cases de la mémoire centrale
peut être occupée : il faut donc libérer une case de la mémoire physique globalement (parmi l'ensemble des cases) ou localement
(parmi les cases occupées par les pages du
processus
en défaut). Le
système d'exploitation
utilise un algorithme pour choisir une case à libérer. Les deux principaux algorithmes sont :
- FIFO (First In, First Out)
- LRU (Least Recently Used)
3.1 Algorithme de remplacement de pages FIFO
Avec cet algorithme, c'est la page la plus anciennement chargée qui est remplacée. La figure 5 donne un exemple du fonctionnement
de cet algorithme où l'on suppose une mémoire centrale composée de trois cases initialement vides. La lettre D signale l'occurrence
de défaut de pages.
 |
Fig 5 : Remplacement de pages FIFO
|
|
3.2 Algorithme de remplacement de pages LRU
Avec cet algorithme, c'est la page la moins récemment accédée qui est remplacée. La figure 6 donne un exemple du fonctionnement
de cet algorithme où l'on suppose une mémoire centrale composée de trois cases initialement vides. La lettre D signale l'occurrence
de défaut de pages.
 |
Fig 6 : Remplacement de pages LRU
|
|
3.3 Complément sur le format d'une entrée de la table des pages d'un processus.
Finalement, une entrée de la
table des pages
d'un processus comprendra souvent les champs suivants :
- le bit V de validation pour indiquer si la page est présente ou non en mémoire centrale
- le champ A pour Accès qui contient les informations pour l'algorithme de remplacement de pages. Par exemple, pour l'algorithme
FIFO, ce champ contiendra la date de chargement de la page; pour l'algorithme LRU, la date du dernier accès à la page.
- Le bit M pour Modification permet de savoir si la page a été modifiée lors de sa présence en mémoire centrale. Si oui, il
faudra réécrire cette page sur le disque avant de l'écraser par une nouvelle page.
- Le champ D pour Droits, qui contient la définition des droits d'accès à la page en lecture / écriture / exécution.
- Le champ n° de case physique, pour la conversion vers l'adresse physique.
4 Algorithme pour la conversion d'une adresse logique paginée en adresse physique.
Nous donnons ci-dessous le schéma général de l'algorithme suivi par le système d'exploitation lors de la conversion d'une
adresse logique vers une adresse physique. Une daresse est un couple constitué des champs page et déplacement.
Procedure Conversion (in adresse_virtuelle, out adresse_physique)
debut
entrée := adresse_virtuelle.page + adresse_table(processus)
Si (entrée.V = FAUX)
alors
-- defaut de page
Charger_page(adresse_virtuelle.page, adresse_case);
entrée.V = vrai;
entrée. case := adresse_case;
fsi
adresse physique := adresse_case + adresse_virtuelle.deplacement;
return (adresse_physique);
fin
Procedure Charger_Page (in page, out case)
debut
Si (Trouver_case_Libre( ) = FAUX)
alors
Choisir_case_à_libérer (case_à_liberer, page_victime);
si (page_victime.M = Vrai)
alors
Ecrire_Disque(page_victime)
Fsi
Fsi
Lire_Disque(case_à_liberer, page)
return (case_à_liberer)
fin
5 Notion d'écroulement
Définition : Ecroulement
On appelle Ecroulement, une haute activité de pagination. Un processus s'écroule lorsqu'il passe plus de temps à paginer qu'à
s'exécuter.
La figure 7 illustre ce phénomène. Elle représente le taux d'utilisation du processeur en fonction du
degré de multiprogrammation
, c'est-à-dire en fonction du nombre de
processus
chargés en mémoire centrale. Sur cette figure, on voit clairement que l'utilisation du processeur augmente jusqu'à un certain
seuil au delà duquel cette utilisation chute complètement : cette chute correspond à une trop grande activité de pagination
des processus qui passent le plus clair de leur temps en entrée/sortie car ils n'ont pas suffisamment de cases mémoires disponibles
pour contenir les pages relatives à leur espace de travail courant.
 |
Fig 7 : Phénomène d'écroulement
|
|
Mémoire virtuelle
Mémoire virtuelle
|